<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // Symbol es6新出的数据类型
      //是由ES6规范引入的一项新特性，它的功能类似于一种标识唯一性的ID
      let s1 = Symbol('zhangsan')
      console.log(s1)
      // 应用场景1：使用Symbol来作为对象属性名(key)
      var obj = {
        name: 1,
        age: 2,
        [Symbol('sex')]: '男',
        [Symbol('shengao')]: 188
      }
      console.log(obj)
      //for 循环拿不到Symbol类型key
      // 使用Object的API
      console.log(Object.getOwnPropertySymbols(obj)) // [Symbol(name)]
      // 使用新增的反射API
      console.log(Reflect.ownKeys(obj)) // [Symbol(name), 'age', 'title']
      //应用场景2：使用Symbol来替代常量
      const TYPE_AUDIO = 'AUDIO'
      const TYPE_VIDEO = 'VIDEO'
      const TYPE_IMAGE = 'IMAGE'
      const TYPE_AUDIO = Symbol()
      const TYPE_VIDEO = Symbol()
      const TYPE_IMAGE = Symbol()
      //
    </script>
  </body>
</html>
